import type {UserType} from "../models/user";

/**
 * 由于 currentUser 是一个模块级变量，一旦通过 setCurrentUserState 设置了用户信息，
 * 那么在应用的其他任何地方调用 getCurrentUserState 都能获取到这个已设置的用户信息，直到下一次重新设置。

 let currentUser: UserType;
 这个变量的特点是：
 在模块顶层声明（不在任何函数或类内部）
 在整个 user.ts 文件中都可以访问
 当其他文件导入这个模块并调用 setCurrentUserState 设置了 currentUser 的值后，这个值会一直保持，直到被重新设置
 其他导入了这个模块的文件调用 getCurrentUserState 时，会获取到相同的 currentUser 值
 */


let currentUser: UserType;

/**
 * 设置当前用户状态
 * @param user 用户信息
 */
const setCurrentUserState = (user: UserType) => {
    currentUser = user;
}

/**
 * 获取当前用户状态
 * @returns 当前用户信息
 */
const getCurrentUserState = (): UserType => {
    return currentUser;
}

export {
    setCurrentUserState,
    getCurrentUserState,
};